<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>areaDetector Plugin NDPluginStdArrays</title>
  <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
</head>
<body>
  <div style="text-align: center">
    <h1>
      areaDetector Plugin NDPluginStdArrays</h1>
    <h2>
      October 1, 2012</h2>
    <h2>
      Mark Rivers</h2>
    <h2>
      University of Chicago</h2>
  </div>
  <h2>
    Contents</h2>
  <ul>
    <li><a href="#Overview">Overview</a></li>
    <li><a href="#Configuration">Configuration</a></li>
    <li><a href="#Screens">Screen shots</a></li>
  </ul>
  <h2 id="Overview">
    Overview
  </h2>
  <p>
    This plugin is the tool for converting the NDArray data produced by asynNDArrayDriver
    drivers into a form that can be accessed by EPICS.
  </p>
  <p>
    NDPluginStdArrays inherits from NDPluginDriver. NDPluginStdArrays converts the NDArray
    data from a callback into the 1-dimensional arrays supported by the standard asyn
    array interfaces, i.e. asyn[Int8, Int16, Int32, Float32, Float64]Array. These interfaces
    are supported by the EPICS waveform record using standard asyn device support. Because
    this plugin inherits from <a href="pluginDoc.html#NDPluginDriver">NDPluginDriver</a>
    it also provides additional information on the array data (e.g. number of dimensions
    and dimension data) that are made available as EPICS PVs so that clients can correctly
    interpret the array data. The <a href="areaDetectorDoxygenHTML/class_n_d_plugin_std_arrays.html">
      NDPluginStdArrays class documentation</a> describes this class in detail.</p>
  <p>
    NDPluginStdArrays defines the following parameters. It also implements all of the
    standard plugin parameters from <a href="pluginDoc.html#NDPluginDriver">NDPluginDriver</a>
    . The EPICS database NDStdArrays.template provides access to these parameters, listed
    in the following table.
  </p>
  <table border="1" cellpadding="2" cellspacing="2" style="text-align: left">
    <tbody>
      <tr>
        <td align="center" colspan="7,">
          <b>Parameter Definitions in NDPluginStdArrays.h and EPICS Record Definitions in NDStdArrays.template</b>
        </td>
      </tr>
      <tr>
        <th>
          Parameter index variable</th>
        <th>
          asyn interface</th>
        <th>
          Access</th>
        <th>
          Description</th>
        <th>
          drvInfo string</th>
        <th>
          EPICS record name</th>
        <th>
          EPICS record type</th>
      </tr>
      <tr>
        <td>
          NDPluginStdArraysData</td>
        <td>
          asyn[Int8, Int16, Int32, Float32, Float64]Array</td>
        <td>
          r/o</td>
        <td>
          Array data as a 1-D array, possibly converted in data type from that in the NDArray
          object to the specific asyn interface.</td>
        <td>
          STD_ARRAY_DATA</td>
        <td>
          $(P)$(R)ArrayData</td>
        <td>
          waveform</td>
      </tr>
    </tbody>
  </table>
  <p>
    If the array data contains more than 16,000 bytes then in order for EPICS clients
    to receive this data they must be built with EPICS R3.14 (not R3.13), and the environment
    variable EPICS_CA_MAX_ARRAY_BYTES on both the EPICS IOC computer and EPICS client
    computer must be set to a value at least as large as the array size in bytes.</p>
  <h2 id="Configuration">
    Configuration</h2>
  <p>
    The NDPluginStdArrays plugin is created with the NDStdArraysConfigure command, either
    from C/C++ or from the EPICS IOC shell.</p>
  <pre>NDStdArraysConfigure (const char *portName, int queueSize, int blockingCallbacks, 
                      const char *NDArrayPort, int NDArrayAddr, size_t maxMemory, 
                      int priority, int stackSize)
  </pre>
  <p>
    For details on the meaning of the parameters to this function refer to the detailed
    documentation on the NDStdArraysConfigure function in the <a href="areaDetectorDoxygenHTML/_n_d_plugin_std_arrays_8cpp.html">
      NDPluginStdArrays.cpp documentation</a> and in the documentation for the constructor
    for the <a href="areaDetectorDoxygenHTML/class_n_d_plugin_std_arrays.html">NDPluginStdArrays
      class</a>.
  </p>
  <h2 id="Screens">
    Screen shots</h2>
  <p>
    The following is the MEDM screen that provides access to the parameters in NDPluginDriver.h
    and NDPluginStdArrays.h through records in NDPluginBase.template and NDStdArrays.template.
    This is the MEDM screen that is normally used to control the display of images via
    EPICS channel access.
  </p>
  <div style="text-align: center">
    <h3>
      NDStdArrays.adl</h3>
    <p>
      <img alt="NDStdArrays.png" src="NDStdArrays.png" /></p>
  </div>
</body>
</html>
